using UniversalAdmin.Application.Common;
using UniversalAdmin.Application.Dtos;
using UniversalAdmin.Domain.Entities.App;

namespace UniversalAdmin.Application.Services;


public interface IUserService
{
    Task<IEnumerable<UsersDto>> GetAllAsync(PageRequestDto userpequestDto);
    Task<UsersDto> GetByIdAsync(Guid id);
    Task<UsersDto?> GetByUsernameAsync(string username);
    Task<IEnumerable<UsersDto>> GetByUsernameFuzzyAsync(string username);
    Task<dynamic> GetUserWithRolesAsync(Guid userId);
    Task<string> CreateAsync(UsersDto dto);
    Task<string> UpdateAsync(Guid id, UsersDto dto);
    Task<string> DeleteAsync(Guid id);
    Task EnableAsync(Guid id);
    Task<string> DisableAsync(Guid id);
    Task<string> AssignRoleAsync(Guid userId, Guid roleId);
    Task RemoveRoleAsync(Guid userId, Guid roleId);
    // Task ChangePasswordAsync(Guid userId, string oldPwd, string newPwd);

}